package com.aoyy.action.order;

import java.util.Set;
import java.util.Iterator;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.aoyy.model.OrderItem;
import com.aoyy.action.BaseAction;
/**============================================================
 * <code>CartAction</code> action for <code>cart</code>
 * @author Administrator
 * @date 2017-07-13
 * ============================================================= */
@Scope("prototype")
@Controller("cartAction")
public class CartAction extends BaseAction {
  private static final long serialVersionUID = 8266099340696486921L;
  private Integer productId;
  
  public void setProductId(Integer productId) {
	this.productId = productId;  
  }
  public Integer getProductId() {
	return productId;  
  }
  /**=================================================================================
   * <code>add()<code> method to add <code>orderItem</code> to <code>cart</code> 
   * @author this author
   * @date 2017-07-13
   * ================================================================================== */
  public String add() {
	if (productId != null && productId > 0) {
	  System.out.println(productId);
	  Set<OrderItem> cart = getCart();
	  boolean bool = false;
	  for (OrderItem orderItem: cart) {
		if (orderItem.getProduct().getProductId() == productId) {
		  orderItem.setQuantity(orderItem.getQuantity() + 1);
		  bool = true; break;
		}
	  }
	  if (!bool) {
		OrderItem orderItem = new OrderItem();
		orderItem.setProduct(productDao.load(productId));
		orderItem.setQuantity(1);
		cart.add(orderItem);
	  }
	  session.put("cart", cart);
	}
	return LIST;  
  }
  
  public String list() {
	return LIST;  
  }
  
  public String delete() {
	Set<OrderItem> cart = getCart();
	Iterator<OrderItem> iterator = cart.iterator();
	OrderItem orderItem;
	while(iterator.hasNext()) {
	  orderItem = iterator.next();
	  if (orderItem.getProduct().getProductId() == productId) {
		iterator.remove(); break;
	  }
	}
	session.put("cart", cart);
    return LIST;	  
  }
  
  /**==========================================================================================
   * <code>remove()</code> method is to remove <code>cart</code> from <code>session</code>
   * @return
   * @date 2017-07-13
   * =========================================================================================== */
  public String clear() {
	session.remove("cart");
	return LIST;
  }
  
}
